hhkb
모의해킹

호스트기반모의해킹_41_윈도우 Unquoted Service Path 악용

작성자 : Heehyeon Yoo|2025-12-14
# 모의해킹# Post-Exploitation# Windows# Privilege Escalation# Service Abuse

1. 개요

Unquoted Service Path(따옴표 없는 서비스 경로) 취약점은 윈도우 서비스의 바이너리 경로(ImagePath)가 공백(Space)을 포함하고 있음에도 큰따옴표("")로 감싸져 있지 않을 때 발생한다.
이 경우 Windows API인 CreateProcess가 서비스 바이너리를 찾을 때 모호함(Ambiguity)이 발생하여, 의도하지 않은(공격자가 생성한) 파일을 먼저 실행하게 된다.

2. 작동 원리(The Flaw)

윈도우가 다음 경로의 서비스를 실행한다고 가정해보자.

  • 경로: C:\Program Files\Abyss Web Server\abyss.exe(따옴표 없음)

CreateProcess 함수는 공백을 기준으로 경로를 끊어서 순차적으로 파일 탐색을 시도한다.

  1. 1차 시도: C:\Program.exe 확인 ->(없으면 다음)
  2. 2차 시도: C:\Program Files\Abyss.exe 확인 ->(없으면 다음)
  3. 3차 시도: C:\Program Files\Abyss Web Server\abyss.exe 확인 -> 실행

만약 공격자가 C:\Program.exe 또는 C:\Program Files\Abyss.exe라는 파일을 생성할 수 있다면, 원본 서비스 대신 악성 파일이 시스템(System) 권한으로 실행된다.

3. 취약점 식별

3.1 서비스 탐색

PowerShell이나 WMIC 명령어로 "공백이 있고" + "따옴표가 없는" 서비스를 찾는다.

# Unquoted Service Path 탐지 명령어
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """
  • /v "C:\Windows\\": 윈도우 기본 서비스 제외.
  • /v """: 따옴표가 있는(정상적인) 서비스 제외.

3.2 쓰기 권한 확인(Write Permission)

경로를 찾았더라도, 공격자가 해당 디렉토리에 파일 생성(Write) 권한이 있어야 한다.

  • icacls "C:\Program Files"
  • accesschk.exe -uwdq "C:\Program Files"(Sysinternals 도구)
  • Full Control(F) 또는 Write(W) 권한이 Users, Authenticated Users, 또는 현재 사용자에게 부여되어 있는지 확인한다.

4. 공격 실행(Exploitation)

4.1 악성 페이로드 생성

서비스로 실행될 바이너리는 일반 EXE와 포맷이 다르므로, msfvenom-f exe-service 옵션을 사용한다.

# Kali Linux
msfvenom -p windows/exec CMD="net localgroup Administrators RedRaccoon /add" -f exe-service -o Abyss.exe
  • 위 예시는 RedRaccoon 유저를 관리자 그룹에 추가하는 명령어를 실행한다.

4.2 파일 배치 및 재시작

  1. 생성한 Abyss.exe를 타겟 호스트의 C:\Program Files\(취약한 위치)로 전송한다.
  2. 서비스를 재시작하거나 시스템을 재부팅한다.
    • sc stop [ServiceName] -> sc start [ServiceName]
    • 권한이 부족해 재시작할 수 없다면, 서버가 재부팅될 때까지 기다린다(Persistence).

4.3 결과

서비스가 재시작되면 CreateProcess의 탐색 순서에 따라 Abyss.exe가 먼저 실행되고, 공격자가 심어둔 커맨드(관리자 그룹 추가 등)가 시스템 권한으로 실행된다.